import { useUserStore } from '@/store/modules/user'
import { LOGIN_TYPE_OAUTH_NO_REGISTER_CODE } from '@/constants/index'
import { message } from '@/libs/message/index'
import { useRouter } from 'vue-router'

/**
 * 第三方登录
 * @param {*} oauthType 第三方登录类型
 * @param {*} oauthData 第三方登录数据
 */
export const oauthLogin = async (oauthType, oauthData) => {
  const userStore = useUserStore()
  // 获取路由实例
  const router = useRouter()
  // 触发登录操作，根据登录操作的返回来判断当前用户时候已经注册
  // 如果已经注册，直接登录，否则跳转到注册页面
  const code = await userStore.login({
    loginType: oauthType,
    ...oauthData
  })
  // 注册页面需要携带第三方登录的数据，用于注册
  if (code && code === LOGIN_TYPE_OAUTH_NO_REGISTER_CODE) {
    message('success', `欢迎您，${oauthData.nickname}，请创建您的账号`, 6000)
    router.push({
      path: '/register',
      query: {
        reqType: oauthType,
        ...oauthData
      }
    })
    return
  }
  // 登录成功，跳转到首页
  router.push('/')
}
